package com.logic.landseaserver.models.payment;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.logic.landseaserver.common.enums.BTypeEnum;
import com.logic.landseaserver.models.payment.PaymentConstant.BillTypeCode;
import com.logic.landseaserver.models.payment.PaymentConstant.PayChannel;
import com.logic.landseaserver.models.payment.PaymentConstant.PayType;

/**
 * 
 *
 * 项目名称：system-server</br>
 * 类名称：BillPaymentCollections</br>
 * 类描述：存放billType/payType关系等静态集合</br>
 * 创建人：Administrator</br>
 * 创建时间：2017年7月22日 下午12:45:42</br>
 * @version 1.0
 *
 */
public abstract class BillPaymentCollections
{
    /** 账单类型的集合 **/
    private static final Map<String, String> BILLTYPE_MAP = new HashMap<String, String>();
    
    /** 支付渠道的集合 **/
    private static final List<String> PAYCHANNEL_LIST = new ArrayList<String>();
    
    /** 支付类型的集合 **/
    private static final List<String> PAYTYPE_LIST = new ArrayList<String>();
    
    /** 支付类型对应支付渠道键值对 **/
    private static final Map<String, String> PAYTYPE_PAYCHANNEL_MAP = new HashMap<String, String>();
    
    static
    {
        // KEY 账单类型的code，VALUE 账单类型的说明
        BILLTYPE_MAP.put(BillTypeCode.FIRST_PAY, BTypeEnum._BT1.getName());
        BILLTYPE_MAP.put(BillTypeCode.MONTH_PAY, BTypeEnum._BT2.getName());
        BILLTYPE_MAP.put(BillTypeCode.REAL_TIME, BTypeEnum._BT3.getName());
        BILLTYPE_MAP.put(BillTypeCode.RESERVE, BTypeEnum._BT4.getName());
        BILLTYPE_MAP.put(BillTypeCode.RECHARGE, "充值");
        
        PAYTYPE_LIST.add(PayType.POS);
        PAYTYPE_LIST.add(PayType.WEBANK_WECHAT);
        PAYTYPE_LIST.add(PayType.WEBANK_ALIPAY);
        PAYTYPE_LIST.add(PayType.WEBANK_MOBILE);
        PAYTYPE_LIST.add(PayType.SHIJI_WECHAT);
        PAYTYPE_LIST.add(PayType.SHIJI_ALIPAY);
        PAYTYPE_LIST.add(PayType.SHIJI_MOBILE);
        PAYTYPE_LIST.add(PayType.SHIJI_POS);
        
        PAYCHANNEL_LIST.add(PayChannel.POS);
        PAYCHANNEL_LIST.add(PayChannel.WEBANK);
        PAYCHANNEL_LIST.add(PayChannel.SHIJI);
        PAYCHANNEL_LIST.add(PayChannel.SHIJI_POS);
        
        PAYTYPE_PAYCHANNEL_MAP.put(PayType.POS, PayChannel.POS);
        PAYTYPE_PAYCHANNEL_MAP.put(PayType.WEBANK_WECHAT, PayChannel.WEBANK);
        PAYTYPE_PAYCHANNEL_MAP.put(PayType.WEBANK_ALIPAY, PayChannel.WEBANK);
        PAYTYPE_PAYCHANNEL_MAP.put(PayType.WEBANK_MOBILE, PayChannel.WEBANK);
        PAYTYPE_PAYCHANNEL_MAP.put(PayType.SHIJI_WECHAT, PayChannel.SHIJI);
        PAYTYPE_PAYCHANNEL_MAP.put(PayType.SHIJI_ALIPAY, PayChannel.SHIJI);
        PAYTYPE_PAYCHANNEL_MAP.put(PayType.SHIJI_MOBILE, PayChannel.SHIJI);
        PAYTYPE_PAYCHANNEL_MAP.put(PayType.SHIJI_POS, PayChannel.SHIJI_POS);
    }
    
    /**
     * 
     * [简要描述]：根据billType获取名称</br>
     * [详细描述]：</br>
     * [作者]：Administrator(2017-07-22)</br>
     *
     * @param billTypeCode
     * @return
     *
     */
    public static String getBillTypeName(String billTypeCode)
    {
        return BILLTYPE_MAP.get(billTypeCode);
    }
    
    /**
     * 
     * [简要描述]：判断payChannel是否存在</br>
     * [详细描述]：</br>
     * [作者]：Administrator(2017-07-22)</br>
     *
     * @param payChannel
     * @return true存在 false不存在
     *
     */
    public static boolean payChannelExists(String payChannel)
    {
        return PAYCHANNEL_LIST.contains(payChannel);
    }
    
    /**
     * 
     * [简要描述]：判断payType是否存在</br>
     * [详细描述]：</br>
     * [作者]：Administrator(2017-07-22)</br>
     *
     * @param payChannel
     * @return true存在 false不存在
     *
     */
    public static boolean payTypeExists(String payType)
    {
        return PAYTYPE_LIST.contains(payType);
    }
    
    /**
     * 
     * [简要描述]：根据支付类型获取支付渠道</br>
     * [详细描述]：</br>
     * [作者]：Administrator(2017-07-22)</br>
     *
     * @param payType
     * @return
     *-
     */
    public static String getPayChannelByPayType(String payType)
    {
        return PAYTYPE_PAYCHANNEL_MAP.get(payType);
    }
}
